package club.yunqiang.club.templatedownload.domain.enums;

import cn.hutool.core.util.ClassUtil;

public enum TemplateEnum {

    DEMO("demo", "template/demo-template.xlsx", "直接下载的excel模板示例.xlsx"),

    DEMO_FILL("demo-fill", "template/demo-template.xlsx", "下载时填充下拉的excel模板示例.xlsx", "template/demo-template_drop-down-data-fill-json.json");

    /**
     * 直接下载的构造函数
     */
    TemplateEnum(String code, String path, String name) {
        this.code = code;
        this.path = path;
        this.name = name;
    }

    /**
     * 带有下拉选项填充 json 配置文件的构造函数
     */
    TemplateEnum(String code, String path, String name, String dropDownDataFillJsonPath) {
        this.code = code;
        this.path = path;
        this.name = name;
        this.dropDownDataFillJsonPath = dropDownDataFillJsonPath;
    }

    /**
     * 文件代码
     */
    private final String code;

    /**
     * 文件路径
     */
    private final String path;

    /**
     * 文件名称（下载后的文件名称）
     */
    private final String name;

    /**
     * 下拉选项数据填充描述 json
     */
    private String dropDownDataFillJsonPath;

    public String getCode() {
        return code;
    }

    public String getPath() {
        return this.path;
    }

    public String getName() {
        return name;
    }

    /**
     * 获取模板文件存储路径
     *
     * @param code {@link TemplateEnum}
     * @return 模板枚举对象
     */
    public static TemplateEnum getByCode(String code){
        TemplateEnum template = null;
        for (TemplateEnum templateEnum : TemplateEnum.values()){
            if (templateEnum.getCode().equals(code)){
                template = templateEnum;
                break;
            }
        }
        return template;
    }

    public String getDropDownDataFillJsonPath() {
        return this.dropDownDataFillJsonPath;
    }

}
